/**
 * 双指针
 * 先将right移动指定的步数
 * 然后left指针移动，当right=null的时候，left就是要删除的节点
 * 因为要删除节点，所以left应该指向的是待删除节点的前驱
 * 同时因为可能删除只有一个元素的节点，那么手动添加头节点前驱
 * 
 * 步骤：
 * 略，答案中的实现方法和leetcode还不太一样
 */

#include<iostream>
#include"LinkedList.h"
using namespace std;
int search_k(LinkedList *list,int k){
    //p是工作指针，q是前面的指针
    LinkedList *p=list->next,*q=list->next;
    int count=0;
    while (p!=nullptr)
    {
        if(count<k) count++;//p不断移动，count计数
        else q=q->next;//当p移动的次数够了，p，q一起移动
        p=p->next;//p一直后移
    }//当p为空的时候，q就是元素（倒数第k个）
    if(count<k){//如果退出的时候，步数小于k，说明k数组长度大，直接返回0
        return 0;
    }else{//直接输出q
        printf("%d ",q->val);
        return 1;
    }
}

